package com.ufcg.lvc.client.prototipacao;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Label;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.ufcg.lvc.client.GreetingService;
import com.ufcg.lvc.client.GreetingServiceAsync;

public class MinhasQuestoes {

	AbsolutePanel panelQuestoes;
	private ListGrid listGrid;

	public MinhasQuestoes() {

		panelQuestoes = new AbsolutePanel();
		panelQuestoes.setSize("900px", "707px");

		Label titulo = new Label("Questões");
		titulo.setStyleName("gwt-TituloMedio");
		panelQuestoes.add(titulo, 0, 10);

		Label lblNovaQuestao = new Label("Nova questão:");
		lblNovaQuestao.setStyleName("gwt-TituloPequeno");
		panelQuestoes.add(lblNovaQuestao, 0, 397);

		com.google.gwt.user.client.ui.Button btnCriarQuesto = new com.google.gwt.user.client.ui.Button(
				"Criar questão");
		panelQuestoes.add(btnCriarQuesto, 60, 432);
		btnCriarQuesto.setSize("145px", "29px");
		btnCriarQuesto.addClickHandler(new ClickHandler() {

			@Override
			public void onClick(ClickEvent event) {
				panelQuestoes.clear();
				NovaQuestao n = new NovaQuestao();
				panelQuestoes.add(n.getPanel());

			}
		});

		com.google.gwt.user.client.ui.Button btnEditar = new com.google.gwt.user.client.ui.Button(
				"Editar");
		panelQuestoes.add(btnEditar, 749, 342);
		btnEditar.setSize("91px", "29px");

		com.google.gwt.user.client.ui.Button btnExcluir = new com.google.gwt.user.client.ui.Button(
				"Excluir");
		panelQuestoes.add(btnExcluir, 652, 342);
		btnExcluir.setSize("91px", "29px");

		com.google.gwt.user.client.ui.Button btnVoltar = new com.google.gwt.user.client.ui.Button(
				"Voltar");
		panelQuestoes.add(btnVoltar, 404, 498);
		btnVoltar.setSize("91px", "29px");

		listGrid = new ListGrid();
		panelQuestoes.add(listGrid, 60, 69);
		listGrid.setSize("780px", "267px");

		listGrid.setShowRecordComponents(true);
		listGrid.setShowRecordComponentsByCell(true);

		listGrid.setWidth(780);
		listGrid.setHeight(267);
		listGrid.setShowAllRecords(true);

		ListGridField nameField = new ListGridField("titulo", "Título");
		ListGridField enunciadoField = new ListGridField("enunciado","Enunciado");
		ListGridField assuntoField = new ListGridField("assunto", "Assunto");
		ListGridField tipoField = new ListGridField("tipo", "Tipo");
		ListGridField dificuldadeField = new ListGridField("dificuldade","Nível de dificuldade");

		listGrid.setFields(nameField, enunciadoField, assuntoField, tipoField,
				dificuldadeField);
		listGrid.setCanResizeFields(true);
		povoarLista();

	}

	public static GreetingServiceAsync getServico() {
		return GWT.create(GreetingService.class);
	}

	public void povoarLista() {
		final AsyncCallback<List<List<String>>> callback = new AsyncCallback<List<List<String>>>() {

			@Override
			public void onFailure(Throwable caught) {
				Window.alert("Erro ao carregar questoes");
				System.out.println("Erro ao carregar questoes");
			}

			@Override
			public void onSuccess(List<List<String>> result) {
				listGrid.setData(QuestoesData.getNewRecords(result.get(0),
						result.get(1), result.get(2), result.get(3),
						result.get(4)));
			}
		};
		getServico().getDados("questao", "titulo", "enunciado", "assunto",
				"tipo", "dificuldade", callback);
	}

	public AbsolutePanel getPanel() {
		return panelQuestoes;
	}
}
